package com.cskaoyan.javase._1extends._7initialization._2classload;

/**
 * 类加载，创建子类对象，会类加载父类吗？顺序是什么？
 *   肯定是需要类加载父类的,而且顺序应该是"先父后子"
 *   实际上,触发子类的类加载,会优先进行父类的类加载,这也是一种类加载的时机
 *
 *   不管何种方式触发子类的类加载,那么都会从该子类的顶层父类开始向下进行类加载
 *   表现在方法进栈上是,从顶层父类的"clinit"方法栈帧进栈
 *   直到当前子类的"clinit"方法栈帧进栈
 *
 *   Object,String等JDK源码中已存在的类,它需要类加载吗?
 *   需要,只不过它们使用的类加载器和程序员自定义类不同
 *
 * @since 16:03
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo extends Grandson{
    public static void main(String[] args) {
        // new Grandson();
        // System.out.println(Grandson.a);
    }
}

class Father {
    static {
        System.out.println("Father");
    }
}

class Son extends Father {
    static {
        System.out.println("Son");
    }
}

class Grandson extends Son {
    static int a;
    static {
        System.out.println("Grandson");
    }
}